Оператор [skip]
Описание
Операторы узла выполняются последовательно — от первого к последнему. Оператор [skip] предназначен для того, чтобы иметь возможность отменить обработку следующих за ним операторов логического узла.
Пример
-- Узел "N1_sim_found"
--------------------------------------
-- Проверить что Сим-карта находится в слоте
N1_sim_found = { -- Создаём логический узел "simfound"
{
["load-ubus"] = function (nodes) -- Оператор [load-ubus] через системную шину
return { -- Получает от GSM-модемеа статус наличия
object = "tsmodem.driver", -- Сим-карты в слоте
method = "cpin",
params = {}, -- Результат:
} -- {
end, -- "value": "true",
} -- "updated": "1773160342"
} -- "changed": "1773160300"
-- "command": "AT+CPIN?"
-- }
-- Узел "N2_sim_registered"
--------------------------------------
-- Если Сим-карта в слоте, то получить статус регистрации в GSM-сети
N2_sim_registered = {
{
["skip"] = function(nodes)
return {
return (N1_sim_found.value == false)
}
end
},
{ -- этот оператор [load-ubus] не будет выполнен, если
-- предшествующий ему оператор [skip] вернёт значение "true"
["load-ubus"] = function(nodes)
return {
ubus = "tsmodem.driver", -- Имя объекта на шине
method = "reg", -- Вызываемый метод
params = {}, -- без параметров
}
end
},
},
Как это работает
- Если [skip] возвращает true, последующие операторы узла не выполняются;
- Если [skip] возвращает false, выполнение продолжается;
- В примере выше оператор [load-ubus] в узле N2_sim_registered будет выполнен только в том случае, если SIM-карта найдена (N1_sim_found.value == false возвращает false). Если SIM-карты нет, выполнение прерывается.